"""
当你写下一个正整数的二进制数形式时，有没有想要探究一下这个二进制数里有多少位数为1呢？

例如：99 = 0b1100011

一个明显的解法即是去获得一个单位掩码，遍历这个二进制数 X & (1 << k) 并返回非零的结果，这种方式将0的位数与1的位数都计算在内。

有没有更好的方式可以只计数1的位数而完全忽略0的位数呢？你可以有自己更多美妙的想法，但是我们并不需要它们。
"""
def count_of_1bits(value):
    n = 0
    while value:
        value &= value-1
        n +=1
    return n
print(count_of_1bits(0b11001100))